home *** CD-ROM | disk | FTP | other *** search
/ Whiteline: Alpha / Whiteline Alpha.iso / progtool / c / megamaxc / shell.txt < prev   
Encoding:
Text File  |  1994-09-22  |  13.6 KB  |  361 lines

  1. Inhaltsverzeichnis
  2. ==================
  3.  
  4. 0  Einleitung
  5.  
  6. 1  Programmdaten
  7.  
  8. 2  Dateien auswählen
  9.  
  10.    2.1  Eine Datei auswählen
  11.    2.2  Mehrere Dateien auswählen
  12.  
  13. 3  Das Menü
  14.  
  15.    3.1  Aufruf per Tastatur
  16.    3.2  Alles für Dateien
  17.    3.3  Programme aufrufen
  18.    3.4  Makefile
  19.    3.5  Drucken
  20.    3.6  Sonstiges
  21.  
  22. 4  Verwendete Literatur
  23.  
  24.  
  25. 0  Einleitung
  26.    ==========
  27.  
  28.    Da ich fast alle meine Programme in 'C' schreibe, habe ich mich
  29.    oft darüber geärgert, daß man zum Kopieren oder Drucken die alte
  30.    Shell von Megamax-C verlassen mußte. Auch das Makefile-Handling
  31.    fand ich verbesserungswürdig.
  32.  
  33.    So kam ich schließlich, angeregt durch einige Artikel in der 'ST-
  34.    Computer' auf die Idee, mir eine eigene Shell zu schreiben. Diese
  35.    Shell sollte alle Funktionen, die man zur Programmentwicklung be-
  36.    nötigt, auf komfortable Weise zur Verfügung stellen.
  37.  
  38.    So entstand schließlich dieses Programm.
  39.  
  40.    Leider ist es mir nicht gelungen. das Geheimnis des Libary-Files
  41.    zu lüften, so daß ich auf diese Funktion leider verzichten mußte.
  42.    Falls mir jemand dabei weiterhelfen könnte...
  43.  
  44.    Trotz sorgfältigen Testens können in einem Programm dieser Größen-
  45.    ordnung immer noch einige Fehler versteckt sein. Für entsprechende
  46.    Hinweise oder Anregungen, wie man es besser machen könnte, wäre
  47.    ich sehr dankbar.
  48.  
  49.    Falls Ihnen dieses Programm gefällt und/oder Sie sich nur einmal
  50.    anschauen wollen, wie man so etwas (nicht) programmiert, schicke
  51.    ich Ihnen für 30,- DM ein voll dokumentiertes Listing (über 6500
  52.    Zeilen) auf Diskette zu.
  53.  
  54.    Und nun wünsche ich Ihnen viel Erfolg für das Entwickeln Ihrer
  55.    Programme mit Megamax-C und dieser Shell.
  56.  
  57.    Achtung:  Überall, wo beim Editieren eines Namen Kleinbuchstaben
  58.    ========  automatisch in Großbuchstaben verwandelt werden, sollte
  59.              man es tunlichst unterlassen einen Underscore ('_') ein-
  60.              zugeben! Sonst herrscht eine Stimmung wie im 2. Welt-
  61.              krieg.
  62.  
  63.  
  64. 1  Programmdaten
  65.    =============
  66.  
  67.    Folgende Dateien gehören zur Shell:
  68.  
  69.       - SHELL.PRG     das Programm
  70.       - SHELL.RSC     die Ressourcedatei
  71.       - SHELL.INF     Datei für Optionen
  72.       - SHELL.TXT     diese Anleitung
  73.       - LQ800.PRT     Druckeranpassung für den Epson-Drucker LQ-800
  74.  
  75.          Programmlänge:  ca.  60 KByte
  76.    Speicherplatzbedarf:  ca. 120 KByte (mit TEMPUS gemessen)
  77.  
  78.    max. 200 Dateien pro (Unter-)Verzeichnis werden angezeigt
  79.    max.  15 Dateien können ausgewählt werden
  80.  
  81.  
  82. 2  Dateien auswaehlen
  83.    ==================
  84.  
  85.    Da mir die Dateiauswahlbox des AES nicht genügend Möglichkeiten bot
  86.    habe ich mir zwei eigene Auswahlboxen programmiert.
  87.    
  88.    Eine für das Auswählen einer Datei, eine andere, um mehrere Dateien
  89.    aus verschiedenen (Unter-)Verzeichnissen auszuwählen.
  90.  
  91.    Es werden Maximal 200 Dateien pro (Unter-)Verzeichnis angezeigt.
  92.    15 Dateien (beim Löschen auch Ordner) können ausgewählt werden.
  93.    
  94.    Die Funktionen der Auswahlboxen entsprechen weitgehend denen, die
  95.    man von der des AES bzw. von Tempus gewöhnt ist. Im folgenden wer-
  96.    den daher nur die Unterschiede erläutert.
  97.  
  98.    ACHTUNG:  Bitte keinen '_' beim Auswählen neuer Dateien eingeben!!
  99.    ========
  100.  
  101. 2.1  Eine Datei auswählen
  102.      ====================
  103.  
  104.    a) Der aktuelle Pfad ist nicht editierbar.
  105.       Dies erschien mir nicht notwendig, da man 6 angemeldeten Lauf-
  106.       werke und 9 einstellbare Extender per Mausklick auswählen kann.
  107.  
  108.    b) Der Slider in der eigentlichen Auswahlbox ist nicht mit gedrück-
  109.       ter Maustaste verschiebbar. 
  110.       Dies bringt jedoch, da es sich häufig nur um wenige Dateien han-
  111.       delt, die man zudem noch mit den Extendern weiter spezifizieren
  112.       kann, keine größeren Nachteile mit sich.
  113.  
  114.    c) Die Box, die den ausgewählten Dateinamen enthält, kann -je nach 
  115.       Zweck der Auswahl- editierbar oder  nicht editierbar sein.
  116.  
  117.           I.  Sie ist editierbar
  118.  
  119.               Auch nicht existente Ordner bzw. Dateien können ausge-
  120.               wählt werden.
  121.  
  122.               Beispiele: neuer Ordner, Editor.
  123.  
  124.          II.  Sie ist nicht editierbar
  125.  
  126.               Nur existente Dateien bzw.Ordner können ausgewählt wer-
  127.               den. 
  128.               Dies bedingt natürlich auch, daß bei einem Wechsel des
  129.               Laufwerks, des (Unter-)Verzeichnisses oder des Extenders
  130.               ein bereits gewählter Dateiname gelöscht wird.
  131.  
  132.               Beispiele: Compiler, Improver.
  133.  
  134.  
  135. 2.2  Mehrere Dateien auswählen
  136.      =========================
  137.  
  138.    a) Der Pfad ist nicht editierbar und die Slider nicht verschiebbar
  139.       (siehe 2.1 a) und b) )
  140.  
  141.    b) Neben den zwei Button 'Abbrechen' und 'Ok' (welches je nach
  142.       Zweck der Auswahl verschiedene Namen haben kann) gibt es, wenn
  143.       auch nicht existente Dateien ausgewählt werden können (z.B. Edi-
  144.       tor,Makefile), ein weiteres mit Namen 'Neu', welches bewirkt,
  145.       daß auch nicht existente Dateien ausgewählt werden können.
  146.  
  147.    c) Das Selektieren von mehreren Dateien ist in den beiden Boxen
  148.       ohne(!!) Drücken der Shifttaste möglich. Deselektieren erfolgt
  149.       durch nochmaliges Anklicken mit der Maus.
  150.  
  151.    d) Ein Mausklick auf den oberen Balken der beiden Boxen bewirkt,
  152.       daß alle in dieser Box selektierten Dateien wieder deselektiert
  153.       werden.
  154.  
  155.    e) Durch Anklicken von '>ADD>' werden die selektierten Dateien
  156.       (falls noch nicht gewählt bzw. falls noch keine 15 Dateien ge-
  157.       wählt wurden) in die rechte Box übernommen.
  158.  
  159.    f) Auf umgekehrtem Weg können sie dann durch Anklicken von '<DEL<'
  160.       wieder aus der Menge der ausgewählten Dateien entfernt werden.
  161.  
  162.    g) '>ADD>' erscheint, wenn ein Element der linken Box angeklickt 
  163.       wird; '<DEL<' ,wenn ein Element der rechten Box angeklickt wird.
  164.  
  165.    h) Doppelklicks werden ignoriert.
  166.  
  167.    g) Durch Anlicken einer Datei in der rechten Box bei gleichzeitigem
  168.       Drücken einer Shift-taste, wird in der Box, die normal den aktu-
  169.       ellen Pfad enthält, der Pfad der gewählten Datei angezeigt.
  170.  
  171.  
  172. 3  Die Menüfunktionen
  173.    ==================
  174.  
  175. 3.1  Aufruf per Tastatur
  176.      ===================
  177.  
  178.    Da nicht alle Atari-User reine Mausfreaks sind, können die wichtig-
  179.    sten Funktionen der Shell auch mit Hilfe der Funktionstasten auf-
  180.    gerufen werden. Die Belegung der Funktionstasten wird immer im
  181.    Hintergrund angezeigt. Diese Button können auch mit der Maus ange-
  182.    klickt werden.
  183.  
  184. 3.2  Alles für Dateien
  185.      =================
  186.  
  187.    Die Funktionen zur Dateibehandlung sind alle unter dem Menüpunkt
  188.    'Datei' zusammengefaßt. 
  189.  
  190.    a) Kopieren von Dateien:
  191.       Es handelt sich hierbei um ein normales Filecopy, wo Dateien
  192.       verschiedener Ordner in einen Zielordner kopiert werden können.
  193.       Dieser Zielordner kann hierbei neu erstellt werden. Auch ist
  194.       es möglich Dateien, die auf dem gleichen Laufwerk kopiert werden
  195.       sollen nur umzubenennen. Diese Eigenschaft ist besonders für
  196.       Ordnungsfanatiker sehr praktisch.
  197.  
  198.    b) Löschen von Dateien:
  199.       Mit dieser Funktion kann man sowohl Dateien beliebiger Ordner
  200.       als auch ganze Ordner löschen. Ordner kann man selektieren,
  201.       indem man während des Mausklicks eine Shift-Taste drückt.
  202.  
  203.    c) Datei-Info:
  204.       Man kann sich verschiedene Informationen, die mit denen des GEM-
  205.       Desktops übereinstimmen, über eine einzelne Datei oder einen 
  206.       ganzen Ordner anzeigen lassen. Einen ganzen Ordner wählt man
  207.       wieder durch Drücken einer Shift-Taste während des Mausklicks.
  208.  
  209.    d) Neuer Ordner:
  210.       Mit dieser Funktion ist es möglich, einen neuen Ordner in einem
  211.       gewählten Verzeichnis anzulegen.
  212.  
  213.    e) Dateiname ändern:
  214.       Nach dem Auswählen einer Datei kann man den Namen dieser Datei
  215.       ändern. Hierbei ist es auch erlaubt, den Pfad der Datei zu än-
  216.       dern.
  217.  
  218.    f) Ende:
  219.       Das Programm wird ohne Sicherheitsabfrage verlassen.
  220.  
  221. 3.3  Programme
  222.      =========
  223.  
  224.    Hier kann man alle Programme, die man zur Programmentwicklung be-
  225.    nötigt, bequem aufrufen und die zugehörigen Parameter mittels der 
  226.    Auswahlboxen übergeben.
  227.    
  228.    Die Pfade der hier aufgerufenen Programme können unter 'Optionen'
  229.    unter 'Konfiguration' eingestellt werden. Falls ein Programm nicht
  230.    aufgerufen werden kann, erfolgt eine Fehlermeldung.
  231.    
  232.    Unter dem Menüpunkt 'andere Programme' können beliebige Programme
  233.    aufgerufen werden. Bei TOS-Programmen wird der Bildschirm gelöscht
  234.    der Cursor eingeschaltet. Bei TTP-Programmen wird zusätzlich noch
  235.    nach Parametern gefragt.
  236.  
  237.    Für Informationen zu den Menüpunkten 'Makefile mit/ohne Improver'
  238.    siehe folgendes Kapitel.
  239.  
  240. 3.4  Makefile
  241.      ========
  242.  
  243.    Als kleinen Ersatz für die fehlenden Library-Funktionen habe ich
  244.    ein recht komfortables Makefilesystem genommen.
  245.  
  246.    Ein Makefile wird dazu verwendet, ein Programm automatisch wieder
  247.    compilieren und linken, wenn im Quelltext Änderungen vorgenommen
  248.    worden sind.
  249.  
  250.    Ein Makefile besteht aus zwei Listen:
  251.    Die erste enthält alle '.H'- und '.C'-Dateien, die zum Erstellen
  252.    des Programms benötigt werden bzw. diejenigen, die überwacht werden
  253.    sollen.
  254.    Die zweite Liste besteht aus '.O'- und '.L'-Dateien, die dann zu
  255.    einem fertigen Programm gelinkt werden sollen.
  256.  
  257.    Diese beiden Listen kann man mit Hilfe der Menüpunkte 'Neu' bzw.
  258.    'Ändern' erstellen. Hierbei man braucht zusätzlich zu den gewählten
  259.    '.C'-Dateien die entsprechenden '.O'-Dateien nicht mehr zu wählen.
  260.    Dies macht das Programm automatisch.
  261.  
  262.    Als nächster Schritt wird nun ein Makefile geladen.
  263.    Hierbei wird geprüft, ob auch alle '.C'- und '.H'-Files vorhanden
  264.    sind. Ist dies nicht der Fall, wird der Ladevorgang abgebrochen.
  265.  
  266.    Kommen wir nun zur eigentlichen Arbeit des Makefiles.
  267.    Beim Laden des Makefiles wurde von allen '.C'- und '.H'-Dateien
  268.    Zeit und Datum gespeichert.
  269.    
  270.    Klickt man nun auf einen der beiden entsprechenden Menüpunkte im
  271.    Menü 'Programme', so werden diese Dateien alle daraufhin überprüft,
  272.    ob sie zu einem späteren Zeitpunkt noch einmal abgespeichert wur-
  273.    den.
  274.  
  275.    Ist dies bei einer '.C'-Datei der Fall, so wird sie neu compiliert;
  276.    bei einer '.H'-Datei werden alle '.C'-Dateien neu compiliert. Fehlt
  277.    die zu einer '.C'-Datei gehörige '.O'-Datei, so wird die '.C'-Datei
  278.    auch compiliert.
  279.    
  280.    Es werden nun alle so ermittelten Dateien compiliert. Hierbei wer-
  281.    den auch das Datum und die Zeit neu gesetzt.
  282.    
  283.    Falls alle Dateien ordnungsgemäß compiliert wurden, wird nun das
  284.    Programm zusammengelinkt.
  285.    Falls beim Compilieren einer Datei ein Fehler auftritt, kann man
  286.    wählen, ob man in den Editor gehen möchte (Fehlerdatei wird auch
  287.    geladen) oder nicht.
  288.  
  289.    Im Menü 'Optionen' unter 'Makefile' kann man einstellen, ob und,
  290.    wenn ja, welcher Makefile beim Start des Programms geladen werden
  291.    soll.
  292.  
  293. 3.5  Drucken
  294.      =======
  295.  
  296.    Dem Drucken von Listings kommt bei der Programmerstellung, beson-
  297.    ders aber bei der Fehlersuche, eine große Bedeutung zu.
  298.    Daher habe ich versucht, diesen Teil der Shell möglichst komforta-
  299.    bel und einzelnen Wünschen leicht anpaßbar zu programmieren.
  300.  
  301.    Da ist zunächst einmal die einfache Druckeranpassung, durch die je-
  302.    des Zeichen 'richtig' auf dem Drucker ausgegeben wird. Das Erstel-
  303.    len der Druckeranpassung ist recht einfach. Man sollte nur beach-
  304.    ten, den Code eines Zeichens in jeweils dreistelligen, dezimalen
  305.    anzugeben (gegebenenfalls führende Nullen eingeben).
  306.  
  307.    Zusätzlich kann man noch mit einigen Optionen das Aussehen des
  308.    Listings verändern. So sind der obere und untere, der rechte und
  309.    der linke Rand einstellbar. 
  310.    Außerdem kann man noch Zeilen- und Seitennummerierung, Schönschrift
  311.    und Endlospapier ein- bzw. ausschalten.
  312.    Man kann auch einstellen, welche Druckeranpassung beim Start des
  313.    Programms geladen werden soll. Diese muß dann im selben Verzeich-
  314.    nis wie das Programm selber zu finden sein.
  315.  
  316.    Hat man nun das gewünschte Aussehen des Ausdrucks eingestellt und
  317.    eine Datei zum Drucken ausgewählt, erscheint eine weitere Dialog-
  318.    box, in der man die erste Zeilen- und Seitennummmer, falls einge-
  319.    stellt, wählen kann.
  320.    
  321.    Man kann hierbei auch zwischen einseitigem und zweiseitigem Bedruk-
  322.    ken des Papiers wählen. Bei zweiseitigem Drucken werden im ersten 
  323.    Durchgang die ungeraden, im zweiten die geraden Seiten gedruckt
  324.    (bei ungerader Startseite umgekehrt).
  325.    
  326.    Zweiseitiges Bedrucken empfiehlt sich jedoch nur bei Druckern mit
  327.    automatischem Einzelblatteinzug, da man sonst viel Arbeit mit dem
  328.    Papierwechseln hat. Auch sollte man sich etwas mehr Zeit zum Druk-
  329.    ken nehmen, da ein etwaiger Druckerspooler wegen des Papierwechsels
  330.    nichts nützt.
  331.  
  332. 3.6  Sonstiges
  333.      =========
  334.  
  335.    In diesem Kapitel werden alle bisher nicht erwähnten Optionen be-
  336.    schrieben.
  337.  
  338.    a) Disk-Info:
  339.       Hier kann man sich über 6 angemeldete Laufwerke Informationen
  340.       anschauen. Diese Informationen stimmen mit denen des GEM-Desk-
  341.       tops überein.
  342.  
  343.    b) Extender:
  344.       Mittels dieser Funktion kann man sich bis zu 8 Extender defi-
  345.       nieren, mit denen man beim Auswählen von Dateien den Kreis der
  346.       angezeigten Namen einschränken kann.
  347.  
  348.    c) Bestätigungen:
  349.       Es erscheint eine Dialogbox, in der man Sicherheitsabfragen
  350.       beim Löschen bzw. Kopieren von Dateien ein- oder ausschalten
  351.       kann.
  352.  
  353.  
  354. 4  Verwendete Literatur
  355.    ====================
  356.  
  357.    [1] Atari ST, GEM-Programmierung in C, Markt&Technik;
  358.    [2] Atari ST INTERN, DATA BECKER;
  359.    [3] Artikel "Ich glaub', ich steh' im Wald", Heft 4 in c't 1987;
  360.    [4] Diverse Artikel in 'ST-Computer'
  361.